/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package filter;

import javax.servlet.*;
import util.HibernateUtil;
import org.hibernate.SessionFactory;

public class ConexaoHibernateFilter implements Filter 
{
 private SessionFactory sf;   
    
 
 @Override
public void init(FilterConfig config) throws ServletException
  {
   this.sf = HibernateUtil.getSessionFactory();
  }

 @Override
public void destroy() 
 {
 
 }
 
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException	 	
 {
   try
   {
	this.sf.getCurrentSession().beginTransaction();
	chain.doFilter(servletRequest, servletResponse);
	this.sf.getCurrentSession().getTransaction().commit();
	this.sf.getCurrentSession().close();
   }catch(Throwable ex)
   {
	try
	{
	 if(this.sf.getCurrentSession().getTransaction().isActive())
	 {
	  this.sf.getCurrentSession().getTransaction().rollback();	 
	 }
	}catch(Throwable t)
	{
	 t.printStackTrace();	
	}
	 throw new ServletException(ex);  
   }	
  }
}
